Ext.ns('ru.proburo.oms.components');

/**
 * @class ru.proburo.oms.components.Exporter
 */
ru.proburo.oms.components.Exporter = function(){};
ru.proburo.oms.components.Exporter.prototype.save = function(order, orderLines, type, encoding)
{
	type 	 = type 	|| 'csv';
	encoding = encoding || 'cp-1251';
	
	var file = air.File.documentsDirectory;
	file.addEventListener(air.Event.SELECT, doSave);
	file.browseForSave('Сохранить как..');
	
	function doSave(e)
	{
		var file = air.File(e.target);
		var fs = new air.FileStream();
		
		addExtension(file, type);
		
		fs.open(file, air.FileMode.WRITE);
		switch(type)
		{
			case 'csv':
				writeCSV(fs, order, orderLines);
				break;
			case 'xls':
				writeXLS(fs, order, orderLines);
				break;
		}
		fs.close();
		
		file.removeEventListener(air.Event.SELECT, doSave);
	}
	
	function writeXLS(fs, o, ol)
	{
		var as3xls = window.runtime.com.as3xls;
		var sheet = new as3xls.xls.Sheet();
		
		sheet.resize(100, 6);
		
		sheet.setCell(0, 0, 'Адрес доставки:');
		sheet.setCell(0, 1, order.data.address);
		sheet.setCell(1, 0, 'Контактное лицо:');
		sheet.setCell(1, 1, order.data.contact_person);
		sheet.setCell(2, 0, 'Телефон:');
		sheet.setCell(2, 1, order.data.phone);
		sheet.setCell(2, 0, 'Предоплата:');
		sheet.setCell(2, 1, order.data.prepayment);
		sheet.setCell(3, 0, 'Коментарии:');
		sheet.setCell(3, 1, order.data.comments);
		
		
		
		sheet.setCell(5, 0, 'Номер');
		sheet.setCell(5, 1, 'Наименование товара');
		sheet.setCell(5, 2, 'Артикул');
		sheet.setCell(5, 3, 'Кол-во');
		sheet.setCell(5, 4, 'Цена, руб.');
		sheet.setCell(5, 5, 'Сумма, руб.');
		
		var summ = 0;
		var row  = 6;
		ol.each(function(r){
			sheet.setCell(row, 0, r.data.art);
			sheet.setCell(row, 1, r.data.name);
			sheet.setCell(row, 2, r.data.brand);
			sheet.setCell(row, 3, r.data.amount);
			sheet.setCell(row, 4, r.data.price);
			sheet.setCell(row, 5, String(r.data.price * r.data.amount));
			
			summ += r.data.price * r.data.amount;
			row++;
		});
		
		sheet.setCell(row, 4, 'Всего к оплате:');
		sheet.setCell(row, 5, String(summ));
		
		var xls = new as3xls.xls.ExcelFile();
		xls.sheets.addItem(sheet);
		var bytes = xls.saveToByteArray(encoding);
		
		fs.writeBytes(bytes, 0, bytes.length);
	}
	
	function writeCSV(fs, o, ol)
	{
		var summ   = 0;
		var str = '';
		
		str +=  'Адрес доставки:;'  + o.data.address 			         + ';\r\n' +
				'Контактное лицо:;' + o.data.contact_person 	         + ';\r\n' +
				'Телефон:;' 		+ o.data.phone 			             + ';\r\n' +
				'Коментарии:;' 	    + o.data.comments 		             + ';\r\n' +
				'\r\n';
		
		str +=  'Номер;' +
				'Наименование товара;' +
				'Производитель;' +
				'Артикул;' +
				'Кол-во;' +
				'Цена, руб.;' +
				'Сумма, руб.;' +
				'\r\n';
		
		ol.each(function(r){
			str += r.data.sku 	  + ';' +
				   r.data.name 	  + ';' +
				   r.data.vendor  + ';' +
				   r.data.article + ';' +
				   r.data.amount  + ';' +
				   Ext.util.Format.ruMoney(r.data.price)  + ';' +
				   Ext.util.Format.ruMoney(r.data.price * r.data.amount) + ';' +
				   '\r\n';
			
			summ += r.data.price * r.data.amount;
		});
		
		str += ';;;;Всего к оплате:;' + Ext.util.Format.ruMoney(summ) + ';\r\n';
		
		fs.writeMultiByte(str, encoding);
	}
	
	function addExtension(file, extension)
	{
		if(!file.extension || file.extension.toLowerCase() != extension)
		{
			file.url += "." + extension;
		}
	}
};
